python的封包与解包 您所在的位置:网站首页 python 解包运行 python的封包与解包

python的封包与解包

#python的封包与解包 | 来源: 网络整理| 查看: 265

python的封包与解包 1. python 封包

将多个值赋值给一个变量时,python会自动将这些值封装成元组,这个特性称之为封包

a = 1, 2, 3 print(a, type(a)) # (1, 2, 3)

当函数返回多个数值时,也会进行封包

def test(): return 1, 2, 3 a = test() print(a, type(a)) # (1, 2, 3)

实践中,很少主动使用封包操作

2. python解包

python解包可以将元组解包成可变参数,将字典解包成关键字参数,下面列列举几种使用python解包的场景

2.1 接收函数返回值 def test(): return 1, 2, 3 a, b, c = test() print(a, b, c) # 1 2 3

函数的返回值是一个元组,左侧是三个变量,这样就会发生解包,a, b, c依次等于元组里的元素,函数的返回值有3个,被封包成了元组, 赋值语句的左侧不一定非得是3个变量

def test(): return 1, 2, 3 a, *b = test() print(a, b) # 1 [2, 3]

变量a赋值为1, 变量b前面有一个星号,剩余的2, 3 将被解包为列表

2.2 遍历字典 my_dic = { '一': 1, '二': 2, '三': 3 } for item in my_dic.items(): print(item) # 解包 for key, value in my_dic.items(): print(key, value) 2.3 传递参数 def func(*args): print(sum(args)) a = (2, 4, 6) func(*a) # 将元组解包成可变参数 def func_2(**kwargs): for key, value in kwargs.items(): print(key, value) b = {'一': 1, '二': 2} func_2(**b) # 将字典解包成关键字参数

解包技术在实践中大量应用,比如使用python操作redis时,如果你想一次性向集合中添加多个值,就必须使用解包结束传入参数

import redis from conf.redis_conf import RedisConfig, QueueConfig r = redis.Redis(host=RedisConfig.host, port=RedisConfig.port, password=RedisConfig.password, db=RedisConfig.db) tup = ('apple', '谷歌', '阿里', '腾讯') r.sadd('my_set', *tup)

sadd的方法定义如下

def sadd(self, name, *values): "Add ``value(s)`` to set ``name``" return self.execute_command('SADD', name, *values)

如果不使用解包技术,就只能在调用sadd方法时手动逐个写入参数,耗时又费力

2.4 合并两个字典

巧妙的利用解包技术,可以简单方便的将两个字典合并到一个新字典中

dic_1 = {'一': 1} dic_2 = {'二': 2} dic_3 = {**dic_1, **dic_2} print(dic_3) # {'一': 1, '二': 2}


【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有